package org.dei.perla.utils.dataconverter;

import java.lang.reflect.Array;

public class ArrayUtility {

	/**
	 * Converte da Byte[] a byte[]
	 * @param toConvert array da convertire
	 * @return array di Byte[]
	 */
	public static Byte[] toByteClassArray(byte[] toConvert) {
		Byte[] byteClassArray = new Byte[toConvert.length];
		for (int i = 0; i < byteClassArray.length; i++) {
			byteClassArray[i] = toConvert[i];
		}
		return byteClassArray;
	}
	
	/**
	 * Converte byte[] a Byte[]
	 * @param toConvert array da convertire
	 * @return array di byte[]
	 */
	public static byte[] toPrimitiveByteArray(Byte[] toConvert) {
		byte[] primitiveByteArray = new byte[toConvert.length];
		for (int i = 0; i < primitiveByteArray.length; i++) {
			primitiveByteArray[i] = toConvert[i];
		}
		return primitiveByteArray;
	}
	
	/**
	 * Restituisce un array il cui ordine degli elementi e' stato invertito
	 * @param toReverse array da invertire
	 * @return array invertito
	 */
	public static <T> T[] reverseArray(T[] toReverse) {
		int length = toReverse.length;
		T[] reversed = (T[]) Array.newInstance(toReverse.getClass().getComponentType(), length);
		for (int i = 0; i < length; i++) {
			reversed[i] = toReverse[length - 1 - i];
		}	
		return reversed; 
	}
}
